package com.zbb.online_exam.utils;

import com.zbb.online_exam.dto.TableDto;
import com.zbb.online_exam.entity.Exam;
import com.zbb.online_exam.entity.Question;
import com.zbb.online_exam.exception.ExamException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;

/**
 * @author zbbstart
 * @date 2021/2/8 - 21:04
 */
@Component
@Slf4j
public class ExamUtils {


    /**
     * 补0操作，不满4位前面都是0
     *
     * @param num 编号
     * @return 补零过后的数字
     */
    public String zeroFillFour(Integer num) {
        return String.format("%04d", num);
    }

    /**
     * 补0操作，不满3位前面都是0
     *
     * @param num 编号
     * @return 补零过后的数字
     */
    public String zeroFillThree(Integer num) {
        return String.format("%03d", num);
    }

    /**
     * 获取信息的封装
     *
     * @param total 总记录条数
     * @param obj   数据对象
     * @return layui数据表格渲染的格式
     */
    public TableDto setTableDto(long total, Object obj) {
        TableDto tableDto = new TableDto();
        tableDto.setCode(0);
        tableDto.setCount(total);
        tableDto.setMsg("");
        tableDto.setData(obj);
        return tableDto;
    }

    /**
     * 无数据信息的封装
     */
    public TableDto setTableDto() {
        TableDto tableDto = new TableDto();
        tableDto.setCode(0);
        tableDto.setCount(0);
        tableDto.setMsg("无数据");
        tableDto.setData(null);
        return tableDto;
    }

    /**
     * 判断两个题目对象是否相同
     */
    public void isSame(Question oldQuestion, Question newQuestion) {
        if (oldQuestion.getQuestionContent().equals(newQuestion.getQuestionContent()) &&
                oldQuestion.getAnswerA().equals(newQuestion.getAnswerA()) &&
                oldQuestion.getAnswerB().equals(newQuestion.getAnswerB()) &&
                oldQuestion.getAnswerC().equals(newQuestion.getAnswerC()) &&
                oldQuestion.getAnswerD().equals(newQuestion.getAnswerD()) &&
                oldQuestion.getAnalyse().equals(newQuestion.getAnalyse()) &&
                oldQuestion.getCorrectAnswer().equals(newQuestion.getCorrectAnswer())
        ) {
            throw new ExamException("您还没有修改此题目，请修改后再提交");
        }

    }
    /**
     * 0 未考 ， 1 ，过期，2 已考
     */
    public List<Exam> transformExamList(List<Exam> examList){
        for (Exam e : examList) {
            if ("0".equals(e.getExamStatus())) {
                e.setExamStatus("未考");
            }
            if ("1".equals(e.getExamStatus())) {
                e.setExamStatus("过期");
            }
            if ("2".equals(e.getExamStatus())) {
                e.setExamStatus("已考");
            }
        }
        return examList;
    }
    /**
     * 获取两个包含关系集合中不同的元素
     * strings1 比较全
     * strings2
     */
    public List<String> getDifferent(List<String> strings1, List<String> strings2) {
        List<String> differentStrs = new ArrayList<>();
        for (String s : strings1) {
            if (!strings2.contains(s)) {
                differentStrs.add(s);
            }
        }
        return differentStrs;
    }
    public List<Integer> getDifferents(List<Integer> strings1, List<Integer> strings2) {
        List<Integer> differentStrs = new ArrayList<>();
        for (Integer s : strings1) {
            if (!strings2.contains(s)) {
                differentStrs.add(s);
            }
        }
        return differentStrs;
    }
}
